<!DOCTYPE html>
<html lang="zh-CN">


<head><meta name="generator" content="Hexo 3.9.0">
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
  <title>
    通信基础 | Haitao Space
  </title>
  <meta name="description" content="Stay hungry, stay foolish.">
  
  <meta name="keywords" content="
  
  ">
  
  <meta name="author" content="haitaoW">

  <meta http-equiv="Cache-Control" content="no-transform">
  <meta http-equiv="Cache-Control" content="no-siteapp">
  <meta name="theme-color" content="#1e2327">
  <link rel="apple-touch-icon" href="https://github.githubassets.com/apple-touch-icon.png">
  <link rel="apple-touch-icon" sizes="180x180" href="https://github.githubassets.com/apple-touch-icon-180x180.png">

  <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico">
  <link rel="stylesheet" href="/css/main.css">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
  

  

  <script src="//cdnjs.cloudflare.com/ajax/libs/vue/1.0.25-csp/vue.min.js"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>
</head>

<body id="replica-app">

<nav class="navbar-wrapper">
  <div class="navbar">
    <div class="container clearfix">
      <a href="/" class="navbar-logo"><i class="fa fa-github"></i></a>

      <div class="navbar-search float-left desktop-only">
        <div class="navbar-search-form">
          <label for="gsc-i-id1">This website</label>
          <div id="google-search">
            <gcse:search></gcse:search>
          </div>
        </div>
      </div>

      <ul class="navbar-nav float-left">
        
        <li><a href="/archives">Archives</a></li>
        
        
        <li><a href="/categories">Categories</a></li>
        
        
        <li><a href="/tags">Tags</a></li>
        
        
        <li class="desktop-only"><a href="/atom.xml" target="_blank">RSS</a></li>
        
      </ul>

      <ul class="navbar-nav user-nav float-right desktop-only">
        <li class="user-nav-notification">
          <a><span class="user-nav-unread"></span><i class="fa fa-bell"></i></a>
        </li>
        <li>
          <a><i class="fa fa-plus"></i> <i class="fa fa-caret-down"></i></a>
        </li>
        <li class="user-nav-logo">
          <a><img src="https://ws1.sinaimg.cn/large/006VKYWFly1g5b0lv0x0qj30rs0mn4gt.jpg"> <i class="fa fa-caret-down"></i></i></a>
        </li>
      </ul>
    </div>
  </div>
</nav>

<div class="main-container">
  <header class="header-wrapper desktop-only">
  <div class="container header-site-detail">
    <ul class="header-toolbar">
      <li class="clearfix">
        <a href="/archives" class="header-toolbar-left"><i
                  class="fa fa-file-text"></i> Posts </a>
        <a href="/archives"
           class="header-toolbar-right"> 10 </a>
      </li>
      <li>
        <a href="/tags" class="header-toolbar-left"><i
                  class="fa fa-tags"></i> Tags </a>
        <a href="/tags"
           class="header-toolbar-right"> 8 </a>
      </li>
      <li>
        <a href="/categories" class="header-toolbar-left"><i
                  class="fa fa-folder-open"></i> Categories </a>
        <a href="/categories"
           class="header-toolbar-right"> 5 </a>
      </li>
    </ul>
    <h2 class="header-title">
      <i class="fa fa-book text-muted"></i>
      <a href="/">Haitao Space</a>
      
      
    </h2>
  </div>

  <div class="container">
    <div class="header-tab-wrapper clearfix">
      <span class="header-tab header-tab-selected"><i class="fa fa-thumbs-o-up"></i> Like</span>
      <span class="header-tab"><i class="fa fa-share-alt"></i> Share</span>
      <span class="header-tab"><i class="fa fa-comments-o"></i> Discussion</span>
      <span class="header-tab"><i class="fa fa-bookmark-o"></i> Bookmark </span>
      <span class="header-tab"><i class="fa fa-smile-o"></i> Smile <i class="fa fa-caret-down"></i></span>
    </div>
  </div>
</header>


<div class="post-container container">
  <h3>
    <i class="fa fa-user-o"></i>
    haitaoW

    <span class="post-date float-right" title="{{moment(1564842814000).format('MMM DD, YYYY, h:mm:ss A')}}">
      <i class="fa fa-pencil-square-o"></i>
      {{moment(1564842814000).fromNow()}}
    </span>
  </h3>

  <article class="post-content">
    <h1>通信基础</h1>
    <blockquote>
<ol>
<li>外设与总线</li>
<li>通信协议：TCP与UDP</li>
</ol>
</blockquote>
<h4 id="总线"><a href="#总线" class="headerlink" title="总线"></a>总线</h4><p>微机中总线一般有内部总线，系统总线，和外部总线。</p>
<p>内部总线：外围芯片与处理器之间的总线：IIC、SPI。</p>
<p>系统总线：PCI，最大传输速率可达132M/S</p>
<p>外部总线：RS232；RS484；USB。</p>
<ol>
<li><p><strong>IIC、SPI、UART、单总线等要从时序、安全性、数据传输等多方面来讲</strong></p>
<table>
<thead>
<tr>
<th>总线接口</th>
<th>同步/异步</th>
<th>速率</th>
<th>工作方式</th>
<th>用线</th>
<th>总线拓扑结构</th>
</tr>
</thead>
<tbody><tr>
<td>UART</td>
<td>异步</td>
<td>慢（bund）</td>
<td>双工</td>
<td>2（TX，RX）</td>
<td>都有</td>
</tr>
<tr>
<td>IIC</td>
<td>同步</td>
<td>慢</td>
<td>半双工</td>
<td>2（SDA，SCL）</td>
<td>总线型</td>
</tr>
<tr>
<td>SPI</td>
<td>同步</td>
<td>快</td>
<td>半双工</td>
<td>4（sclk，simo，somi，ss）</td>
<td>环形</td>
</tr>
<tr>
<td>USB</td>
<td>同步</td>
<td>快</td>
<td>半双工</td>
<td>4（Vbus）</td>
<td>星型</td>
</tr>
<tr>
<td>1-wire</td>
<td>同步</td>
<td>慢</td>
<td>半双工</td>
<td>1</td>
<td></td>
</tr>
</tbody></table>
<p>同步与异步的区别：异步是需要等待的，同步是指及时响应 的问题。</p>
<h4 id="协议：TCP与UDP"><a href="#协议：TCP与UDP" class="headerlink" title="协议：TCP与UDP"></a>协议：TCP与UDP</h4><p>TCP/IP协议是一个协议簇。里面包括很多协议。UDP只是其中的一个。之所以命名为TCP/IP协议，因为TCP,IP协议是两个很重要的协议，就用他两命名了。</p>
<p>TCP（Transmission Control Protocol，传输控制协议）是面向连接的协议。</p>
<p><img src="https://img-blog.csdn.net/20170516204339754?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTk1Nzc1OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="img"></p>
</li>
</ol>
<p><strong>TCP的三次握手</strong></p>
<ol>
<li>主机A通过向主机B发送一个含有同步序列号（SYN）的标志位的数据段给主机B，向主机B请求建立连接，用过这个数据段，主机A告诉主机B我想要和你通信；你可以用哪个序列号作为作为起始数据段来回应我。</li>
<li>主机B收到主机A的请求后，用   一个带有确认应答的（ACK）和同步序列号的（SYN）标志位的数据段响应主机A也告诉他两件事：1. 我已经接收你的请求了你可以传输数据了，你要用哪个序列号作为起始数据段来回应我。</li>
<li>主机A接收到这个数据段后，在发送一个确认应答，确认已收到主机B的数据段。我已经收到回复，我现在要开始传输数据了。</li>
</ol>
<p><strong>TCP的四次挥手</strong></p>
<ol>
<li>当主机A完成数据传输后，将控制为FIN置1 ，提出停止TCP连接请求</li>
<li>主机收到FIN后对其作出响应，确认这一方向上的TCP连接将关闭将ACK置1；</li>
<li>由B端再次提出反方向的关闭请求，将FIN置1</li>
<li>主机A对主机B的请求进行响应，将ACK置1，双方向的关闭结束。</li>
</ol>
<blockquote>
<p>几个关键字解释：</p>
<ol>
<li>ACK  TCP报头的控制位之一，对数据进行确认，确认由目的端发出，用它来告诉发送</li>
<li>SYN 同步序列号，TCP建立时将这个位置1</li>
<li>FIN 发送端完成发送人物段，当TCP完成数据传输需要断开，提出断开连接的一方将这位置位</li>
</ol>
</blockquote>
<p><strong>DUP</strong>（User Data Protocol，用户数据报协议）是一个非连接的协议。</p>
<p><img src="https://img-blog.csdn.net/20170516210523641?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTk1Nzc1OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="è¿éåå¾çæè¿°"></p>
<p>由于不需要建立连接，所以不断的往对方的主机发送UDP数据包，然年后对方主机确认收到消息及时反馈回来。（ping 操作就是基于这个原理）</p>
<p><strong>TCP 与UDP的区别</strong></p>
<table>
<thead>
<tr>
<th align="left">1. 角度</th>
<th>TCP</th>
<th>UDP</th>
</tr>
</thead>
<tbody><tr>
<td align="left">是否连接</td>
<td>面向连接（发送数前需要建立连接）</td>
<td>无需连接</td>
</tr>
<tr>
<td align="left">是否丢包重试</td>
<td>实现数据传输时 的各种控制功能，可以进行丢包的重新发送，还可以对次序乱掉的包进行顺序控制</td>
<td>不会进行丢包重试，也不会纠正到达的顺序</td>
</tr>
<tr>
<td align="left">模式</td>
<td>流模式（面向字节流）</td>
<td>数据包模式（面向报文）</td>
</tr>
<tr>
<td align="left">对应关系</td>
<td>一对一</td>
<td>支持一对一，一对多，多对一和多对多的交互通信。</td>
</tr>
<tr>
<td align="left">头部开销</td>
<td>最小20字节</td>
<td>只有8字节</td>
</tr>
<tr>
<td align="left">可靠性</td>
<td>全双工，非常可靠无差错不丢失不重复且按照顺序到达</td>
<td>不可保证交付，不保证顺序到达</td>
</tr>
<tr>
<td align="left">拥塞控制</td>
<td>有控制</td>
<td>有拥塞控制，因此网络出现</td>
</tr>
</tbody></table>
<h4 id="网络IO模型"><a href="#网络IO模型" class="headerlink" title="网络IO模型"></a>网络IO模型</h4><p><a href="https://www.cnblogs.com/anker/p/3254269.html" target="_blank" rel="noopener">https://www.cnblogs.com/anker/p/3254269.html</a></p>
<p>数据流向：</p>
<p><img src="https://images0.cnblogs.com/blog/305504/201308/12224938-4db3844232b84fb284d057a21df5f149.png" alt="img"></p>
<p>常见的IO模型有阻塞、非阻塞、IO多路复用、异步。</p>

  </article>
</div>


    




</div>

<div class="footer-wrapper container">
  <footer class="footer clearfix">
    <div class="clearfix">
    <a href="https://haitao926.github.io" class="footer-logo">
      <i class="fa fa-github"></i>
    </a>
    <ul class="footer-social-link">
      <li>© 2019 haitaoW</li>
      <li><a href="https://haitao926.github.io">Home</a></li>
      
      <li><a href="https://github.com/haitao926">Github</a></li>
      
    </ul>
    <div class="footer-theme-info">
      Theme <a href="//github.com/sabrinaluo/hexo-theme-replica">Replica</a>
      by <a href="//github.com/sabrinaluo">Hiitea</a> ❤ Powered by Hexo
    </div>
    </div>
    
  </footer>
</div>




<script src="/js/main.js"></script>

</body>
</html>
